﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Elysium.Demo;
using SIIE_ERP.Codigo;
using SIIE_ERP.View;
using SIIE_ERP.BaseDatos.Configuracion;
using System.Data;
using SIIE_ERP.BaseDatos;
using SIIE_ERP.BaseDatos.Configuracion.Empresa.PagoLicencias;
using Elysium.Demo.Ventas;

namespace Elysium.Demo.Configuracion
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class Usuarios_Edita : UserControl, IPropiedadesNavegacion
    {
        ////////////////////////////////////////////////////////////////////////////
        //  PROPIEDADES DE NAVEGACION
        public string Texto { get { return _texto; } }
        public TabControl TabControlPadre { get { return _tabControlPadre; } }
        public TabItem TabItemPadre { get { return _tabItemPadre; } }

        private string _texto;
        private TabControl _tabControlPadre;
        private TabItem _tabItemPadre;

        public void setParametros(string Texto, ref TabControl tabControl, ref TabItem tabItem)
        {
            this._texto = Texto; this._tabControlPadre = tabControl; this._tabItemPadre = tabItem;
        }

        private void ButtonRegresar_Click(object sender, RoutedEventArgs e)
        {
            _tabControlPadre.Items.Remove(_tabItemPadre);
        }
        // FIN DE PROPIEDADES DE NAVEGACION
        ///////////////////////////////////////////////////////////////////////////

        private UsuarioActivo _sesion;
        private Int32 Id;
        private string Menus_RFC;

        public const int PRECIO_DIA_PESOS = 6;

        public Usuarios_Edita(UsuarioActivo usuario, string Id)
        {            
            InitializeComponent();
            this._sesion = usuario;
            this.Id = Int32.Parse(Id);
            CargaDatos();

            dbo_Sec_MenuUser MenuUser = new dbo_Sec_MenuUser();
            DataTable RFCs = MenuUser.Get_RFCs_BY_Id(_sesion.IdUsuario);

            RFCs_ComboBox.DataContext = RFCs;
            RFCs_ComboBox.SelectedIndex = 0;
        }

        private void CargaDatos()
        {
            var Datos = SIIE_ERP.BaseDatos.Configuracion.dbo_Sec_Usuario.Get_Usuario_Por_Id(Id).Rows[0];

            TextBox_Nombre.Text = Datos["Nombre"].ToString();
            TextBox_Puesto.Text = Datos["Puesto"].ToString();
            TextBox_Telefono.Text = Datos["Telefono"].ToString();            
            TextBox_Email.Text = Datos["Email"].ToString();

            //if (Boolean.Parse(Datos["IsActive"].ToString()))
            //    CheckBox_Activo.IsChecked = true;
            //else
            //    CheckBox_Activo.IsChecked = false;

            ComboBoxUI.ComboPaisEstado(ref ComboPais, ref ComboEstado, Int32.Parse(Datos["Id_Pais"].ToString()), Int32.Parse(Datos["Id_Estado"].ToString()));
            NombreUsuario.Content = Datos["UserName"].ToString();

            if (NombreUsuario.Content.Equals("admin"))
            {
               // CheckBox_Activo.IsEnabled = false;
                CheckBox_Bancos.IsEnabled = false;
                CheckBox_CapitalHumano.IsEnabled = false;
                CheckBox_Compras.IsEnabled = false;
                CheckBox_Configuracion.IsEnabled = false;
                CheckBox_CRM.IsEnabled = false;
                CheckBox_Informes.IsEnabled = false;
                CheckBox_Inventarios.IsEnabled = false;
                CheckBox_Ventas.IsEnabled = false;

                ComboBox_PV.IsEnabled = false;
            }
        }
        
        private void RFCs_ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            DataRowView currentItem = (DataRowView)RFCs_ComboBox.SelectedItem;
            Menus_RFC = (string)currentItem.Row[0];

            dbo_Sec_MenuUser MenuU = new dbo_Sec_MenuUser();
            DataTable ds_Menu = MenuU.Get_Menus_by_RFC(this.Id, this.Menus_RFC);

            if (ds_Menu.Rows.Count == 0)
            {
                CheckBox_Ventas.IsChecked = false;
                CheckBox_Inventarios.IsChecked = false;
                CheckBox_CapitalHumano.IsChecked = false;
                CheckBox_Configuracion.IsChecked = false;
                CheckBox_Compras.IsChecked = false;
                CheckBox_Bancos.IsChecked = false;
                CheckBox_CRM.IsChecked = false;
                CheckBox_Informes.IsChecked = false;

                ComboBox_PV.SelectedIndex = 0;
            }
            else
            {
                for (int i = 0; i < ds_Menu.Rows.Count; i++)
                {

                    if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 10 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_Ventas.IsChecked = true;
                    }
                    else if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 20 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_Inventarios.IsChecked = true;
                    }
                    else if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 30 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_CapitalHumano.IsChecked = true;
                    }
                    else if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 40 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_Configuracion.IsChecked = true;
                    }
                    else if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 60 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_Compras.IsChecked = true;
                    }
                    else if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 70 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_Bancos.IsChecked = true;
                    }
                    else if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 80 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_CRM.IsChecked = true;
                    }
                    else if (Int32.Parse(ds_Menu.Rows[i]["IdMenu"].ToString()) == 90 && Boolean.Parse(ds_Menu.Rows[i]["IsActive"].ToString()) == true)
                    {
                        CheckBox_Informes.IsChecked = true;
                    }
                }

                dbo_Sec_Usuario_PV MenuPV = new dbo_Sec_Usuario_PV();
                PuntoVenta_Id ds_MenuPV = MenuPV.Get_Usuario_PV(Id);

                if (ds_MenuPV == PuntoVenta_Id.PV_Sin_Acceso)
                    ComboBox_PV.SelectedIndex = 0;
                else if (ds_MenuPV == PuntoVenta_Id.Cajero)
                    ComboBox_PV.SelectedIndex = 1;
                else if (ds_MenuPV == PuntoVenta_Id.Supervisor)
                    ComboBox_PV.SelectedIndex = 2;
            }
        }

        private void Button_Guardar_Click(object sender, RoutedEventArgs e)
        {
            bool IsValid = true;
            string msg = "";

            if (!((bool)CheckBox_Ventas.IsChecked) && !((bool)CheckBox_Compras.IsChecked) && !((bool)CheckBox_Inventarios.IsChecked) && !((bool)CheckBox_Bancos.IsChecked) && !((bool)CheckBox_CapitalHumano.IsChecked) && !((bool)CheckBox_CRM.IsChecked) && !((bool)CheckBox_Informes.IsChecked) && !((bool)CheckBox_Configuracion.IsChecked) && ComboBox_PV.SelectedIndex == 0)
            {
                msg = "Favor de establecer al menos un Rol al usuario.";
                IsValid = false;
            }

            if (!FuncionesClass.IsValidEmail(TextBox_Email.Text))
            {
                msg = "Favor de ingresar un Email correcto.";
                IsValid = false;
            }

            if (String.IsNullOrEmpty(TextBox_Email.Text))
            {
                msg = "Favor de ingresar el Email del Usuario.";
                IsValid = false;
            }

            if (String.IsNullOrEmpty(TextBox_Nombre.Text))
            {
                msg = "Favor de ingresar el Nombre.";
                IsValid = false;
            }

            if (IsValid)
            {
                try
                {
                    //Comentado 02/Dic/14
                    //if (((bool)CheckBox_Activo.IsChecked))
                    //{
                    //    DataTable dt_Usuario = dbo_Sec_Usuario.Get_Usuario_Por_Id(Id);
                    //    DataTable dt_Usuario_Admin = dbo_Sec_Usuario.Get_Usuario_Por_UserName("admin");

                    //    if (DateTime.Now > DateTime.Parse(CypherClass.DescifrarTexto(dt_Usuario.Rows[0]["Genero"].ToString())))
                    //    {
                    //        int days = ((int)(DateTime.Parse(CypherClass.DescifrarTexto(dt_Usuario_Admin.Rows[0]["Genero"].ToString())) - DateTime.Now).TotalDays) + 1;
                    //        double MontoAux = Double.Parse((days * PRECIO_DIA_PESOS).ToString());

                    //        System.Windows.Forms.DialogResult dialogResult = 
                    //            System.Windows.Forms.MessageBox.Show(
                    //                "Se le cobrarán " + MontoAux.ToString("C") + " por la licencia de este usuario para alinearla con la del usuario administrador",
                    //                "Pago Usuario", 
                    //                System.Windows.Forms.MessageBoxButtons.YesNo
                    //            );
                    //        if (dialogResult == System.Windows.Forms.DialogResult.Yes)
                    //        {
                    //            if (!WebServicesClass.CheckConnection())
                    //            {
                    //                MessageBox.Show("Se necesita conexión a internet para realizar el pago de la licencia de un usuario");
                    //                return;
                    //            }

                    //            dbo_Cat_Empresa_PagoDomiciliado cat_pago = new dbo_Cat_Empresa_PagoDomiciliado(_sesion.RFC, _sesion.UserName);
                    //            DataTable dt_pago = cat_pago.Get_Empresa_PagoDomiciliado_Por_RFC();
                                
                    //            if(dt_pago.Rows.Count == 0)
                    //            {
                    //                MessageBox.Show("Favor de ingresar sus datos bancarios para poder realizar este cobro en la sección de Pagos Domiciliados");
                    //                return;
                    //            }

                    //            string Nombre = dt_pago.Rows[0]["Nombre"].ToString();
                    //            string Apellidos = dt_pago.Rows[0]["Apellidos"].ToString();
                    //            string Numero_Tarjeta = dt_pago.Rows[0]["Numero_Tarjeta"].ToString();
                    //            string CP = dt_pago.Rows[0]["CP"].ToString();
                    //            string CodigoSeguridad = dt_pago.Rows[0]["CodigoSeguridad"].ToString();
                    //            string FechaVenc_mm = dt_pago.Rows[0]["FechaVenc_mm"].ToString();
                    //            string FechaVenc_aa = dt_pago.Rows[0]["FechaVenc_aa"].ToString();
                    //            string Telefono = dt_pago.Rows[0]["Telefono"].ToString();
                    //            string Celular = dt_pago.Rows[0]["Celular"].ToString();
                    //            string Dir_Calle = dt_pago.Rows[0]["Dir_Calle"].ToString();
                    //            string Dir_Colonia = dt_pago.Rows[0]["Dir_Colonia"].ToString();
                    //            string Dir_CiudadPueblo = dt_pago.Rows[0]["Dir_CiudadPueblo"].ToString();
                    //            string Desc_Estado = dt_pago.Rows[0]["Desc_Estado"].ToString();
                    //            string Desc_Pais = dt_pago.Rows[0]["Desc_Pais"].ToString();

                    //            if (
                    //                String.IsNullOrEmpty(Nombre) ||
                    //                String.IsNullOrEmpty(Apellidos) ||
                    //                String.IsNullOrEmpty(Numero_Tarjeta) ||
                    //                String.IsNullOrEmpty(CP) ||
                    //                String.IsNullOrEmpty(CodigoSeguridad) ||
                    //                String.IsNullOrEmpty(FechaVenc_mm) ||
                    //                String.IsNullOrEmpty(FechaVenc_aa) ||
                    //                String.IsNullOrEmpty(Telefono) ||
                    //                String.IsNullOrEmpty(Celular) ||
                    //                String.IsNullOrEmpty(Dir_Calle) ||
                    //                String.IsNullOrEmpty(Dir_Colonia) ||
                    //                String.IsNullOrEmpty(Dir_CiudadPueblo) ||
                    //                String.IsNullOrEmpty(Desc_Estado) ||
                    //                String.IsNullOrEmpty(Desc_Pais)
                    //            )
                    //            {
                    //                MessageBox.Show("Los datos bancarios que ha ingresado están incompletos, favor de verificar.");
                    //                return;
                    //            }

                    //            if (WebServicesClass.CreateAndSavePay_PagoFacil
                    //            (
                    //                MontoAux, 
                    //                _sesion.RFC,
                    //                Nombre,
                    //                Apellidos,
                    //                Numero_Tarjeta,
                    //                CodigoSeguridad,
                    //                CP,
                    //                FechaVenc_mm,
                    //                FechaVenc_aa,
                    //                Telefono,
                    //                Celular,
                    //                Dir_Calle,
                    //                Dir_Colonia,
                    //                Dir_CiudadPueblo,
                    //                Desc_Estado,
                    //                Desc_Pais,
                    //                "Pago de Ajuste de Usuario"
                    //            ))
                    //            {
                    //                MessageBox.Show("Se ha realizado el pago exitosamente.");

                    //                Respuesta r1 = dbo_Sec_Usuario.Update_LicenciaToAdmin(Id);
                    //            }
                    //            else
                    //            {
                    //                MessageBox.Show("No se ha podido realizar el pago ya que sus datos bancarios son incorrectos, favor de verificar.");
                    //                return;
                    //            }                                
                    //        }
                    //        else 
                    //        {
                    //            System.Windows.MessageBox.Show("Se ha cancelado la compra de licencia de este usuario");
                    //            return;
                    //        }
                    //    }                        
                    //}

                    dbo_Sec_Usuario s = new dbo_Sec_Usuario(_sesion.RFC, _sesion.UserName);
                    if (
                    s.Update_Usuario_Datos(
                        Id,
                        TextBox_Nombre.Text,
                        TextBox_Telefono.Text,
                        TextBox_Email.Text,
                        TextBox_Puesto.Text,
                        ComboPais.SelectedIndex+1,
                        ComboEstado.SelectedIndex+1,
                        true
                      //  ((bool)CheckBox_Activo.IsChecked)
                    ).Id != 1)
                    {
                        MessageBox.Show("Error al Actualizar Usuario Usuario.");
                        _tabControlPadre.Items.Remove(_tabItemPadre);
                        return;
                    }

                    //Menus
                    dbo_Sec_MenuUser z = new dbo_Sec_MenuUser();

                    if ((bool)CheckBox_Ventas.IsChecked)
                        z.Update_MenuUser(10, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(10, Menus_RFC, Id, false);

                    if ((bool)CheckBox_Inventarios.IsChecked)
                        z.Update_MenuUser(20, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(20, Menus_RFC, Id, false);

                    if ((bool)CheckBox_CapitalHumano.IsChecked)
                        z.Update_MenuUser(30, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(30, Menus_RFC, Id, false);

                    if ((bool)CheckBox_Configuracion.IsChecked)
                        z.Update_MenuUser(40, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(40, Menus_RFC, Id, false);

                    z.Update_MenuUser(50, Menus_RFC, Id, true);

                    if ((bool)CheckBox_Compras.IsChecked)
                        z.Update_MenuUser(60, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(60, Menus_RFC, Id, false);

                    if ((bool)CheckBox_Bancos.IsChecked)
                        z.Update_MenuUser(70, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(70, Menus_RFC, Id, false);

                    if ((bool)CheckBox_CRM.IsChecked)
                        z.Update_MenuUser(80, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(80, Menus_RFC, Id, false);

                    if ((bool)CheckBox_Informes.IsChecked)
                        z.Update_MenuUser(90, Menus_RFC, Id, true);
                    else
                        z.Update_MenuUser(90, Menus_RFC, Id, false);

                    if (ComboBox_PV.SelectedValue.Equals("1"))
                        z.Update_MenuUser(100, Menus_RFC, Id, false);
                    else
                        z.Update_MenuUser(100, Menus_RFC, Id, true);

                    dbo_Sec_Usuario_PV aa = new dbo_Sec_Usuario_PV();

                    if (ComboBox_PV.SelectedIndex + 1 == 1)
                        aa.Update_Usuario_PV(Id, PuntoVenta_Id.PV_Sin_Acceso);
                    else if (ComboBox_PV.SelectedIndex + 1 == 2)
                        aa.Update_Usuario_PV(Id, PuntoVenta_Id.Cajero);
                    else if (ComboBox_PV.SelectedIndex + 1 == 3)
                        aa.Update_Usuario_PV(Id, PuntoVenta_Id.Supervisor);

                    MessageBox.Show("Usuario Modificado Correctamente.");
                    _tabControlPadre.Items.Remove(_tabItemPadre);
                }
                catch (Exception)
                {
                    MessageBox.Show("Error al Modificar Usuario.");
                    _tabControlPadre.Items.Remove(_tabItemPadre);
                }
            }
            else
            {
                MessageBox.Show(msg);
            }          
        }

        private void ComboPais_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ComboPais.SelectedValue != null)
                ComboBoxUI.ActualizaEstado(Int32.Parse(ComboPais.SelectedValue.ToString()), ref ComboEstado);            
        }

        private void ButtonInformacion_Click_1(object sender, RoutedEventArgs e)
        {
            WindowAyuda Ayuda = new Elysium.Demo.WindowAyuda("Usuarios.htm", "Ayuda");
            Ayuda.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Ayuda.ShowDialog();
        }

        private void ButtonRegresar_Click_1(object sender, RoutedEventArgs e)
        {
            _tabControlPadre.Items.Remove(_tabItemPadre);
        }

        private void Button_Licencia_Click(object sender, RoutedEventArgs e)
        {
            try
            {
               _tabControlPadre.Items.Remove(_tabItemPadre);

                SIIE_ERP.View.NavegacionUI.AbrirPestanaEditar(this.Id.ToString(),
                                                       typeof(Usuarios_Licencias),
                                                       ref  _tabControlPadre,
                                                       _sesion);

            }
            catch (Exception)
            {
                
                
            }
        }

        private void Button_Cancelar_Click(object sender, RoutedEventArgs e)
        {
            _tabControlPadre.Items.Remove(_tabItemPadre);
        }

       
    }
}
